package com.woniuxy.nativedemo;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @Author: 马宇航
 * @Todo: 创建一个原生的 可以利用 mq的 生产者
 * @DateTime: 25/03/10/星期一 16:08
 * @Component: 成都蜗牛学苑
 * <img style="width:500px" src="https://woniumd.oss-cn-hangzhou.aliyuncs.com/security/mayuhang/202503101550755.png"/>
 **/
public class NativeProduct {
    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        // 端口号 和浏览器的ui后台15672 不一样  后面yml中配置，就写5672
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("java112");
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("admin123");
        //连接工厂是创建 connection ，需要信道 channel
        Connection connection = connectionFactory.newConnection();
        // 信道创建
        Channel channel = connection.createChannel();
        // 声明一个队列，目前没有考虑 交换机，但是实际上已经配置了交换机
        //5个参数 队列名称，是否持久化，是否独占，是否自动删除，其他参数
        channel.queueDeclare("hello",false,false,false,null);
        // 发送消息
        String msg = "Hello World";
        // 参数： 1. 交换机名称 默认是空串交换机 2.路由key默认使用队列名字  3.其他参数 4.消息体
        channel.basicPublish("","hello",null,msg.getBytes());
        // 消息体是字节数组
        System.out.println("消息发送成功");
        // 关闭连接
        channel.close();
        connection.close();
    }
}
